Leadtools.Dicom Namespace > DicomDataSet Class > SetModalityLut Method : SetModalityLut(DicomModalityLutAttributes,Int32[]) Method |
public void SetModalityLut( DicomModalityLutAttributes attributes, int[] data )
'Declaration Public Overloads Sub SetModalityLut( _ ByVal attributes As DicomModalityLutAttributes, _ ByVal data() As Integer _ )
'Usage Dim instance As DicomDataSet Dim attributes As DicomModalityLutAttributes Dim data() As Integer instance.SetModalityLut(attributes, data)
public void SetModalityLut( DicomModalityLutAttributes attributes, int[] data )
ObjectiveC Syntax
function Leadtools.Dicom.DicomDataSet.SetModalityLut(DicomModalityLutAttributes,Int32[])( attributes , data )
public: void SetModalityLut( DicomModalityLutAttributes^ attributes, array<int>^ data )
If you are trying to set the "Rescale Intercept" (0028,1052) and "Rescale Slope" (0028,1053), set IsRescaleSlopeIntercept to true, and populate RescaleIntercept and DicomModalityLutAttributes.RescaleSlope with the new values. You can also populate RescaleType if you want to set "Rescale Type" (0028,1054).
If you are trying to set the elements under "Modality LUT Sequence", set IsModalityLutSequence to true, and populate FirstStoredPixelValueMapped, NumberOfEntries, EntryBits, and LutType. In this case, data should hold the "LUT Data" (0028,3006).
Public Sub TestSetModalityLut() Dim dicomFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm") 'Make sure to initialize the DICOM engine, this needs to be done only once 'In the whole application DicomEngine.Startup() Dim ds As DicomDataSet = New DicomDataSet() Using (ds) 'Load DICOM File ds.Load(dicomFileName, DicomDataSetLoadFlags.None) Dim modalityLutAttributes As DicomModalityLutAttributes = New DicomModalityLutAttributes() 'No Modality LUT Sequence (0028,3000) modalityLutAttributes.IsModalityLutSequence = False 'Yes there is a rescale slope and intercept modalityLutAttributes.IsRescaleSlopeIntercept = True modalityLutAttributes.RescaleIntercept = -128.0 modalityLutAttributes.RescaleSlope = 1.0 modalityLutAttributes.RescaleType = "UNSPECIFIED" ' Delete the existing modality LUT, ' although we don't have to ! ds.DeleteModalityLut() 'Set rescale slope and intercept ds.SetModalityLut(modalityLutAttributes, Nothing) ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "MLUT.dcm"), DicomDataSetSaveFlags.None) End Using DicomEngine.Shutdown() End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class
public void TestSetModalityLut() { string dicomFileName = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm"); //Make sure to initialize the DICOM engine, this needs to be done only once //In the whole application DicomEngine.Startup(); using (DicomDataSet ds = new DicomDataSet()) { //Load DICOM File ds.Load(dicomFileName, DicomDataSetLoadFlags.None); DicomModalityLutAttributes modalityLutAttributes = new DicomModalityLutAttributes(); //No Modality LUT Sequence (0028,3000) modalityLutAttributes.IsModalityLutSequence = false; //Yes there is a rescale slope and intercept modalityLutAttributes.IsRescaleSlopeIntercept = true; modalityLutAttributes.RescaleIntercept = -128.0; modalityLutAttributes.RescaleSlope = 1.0; modalityLutAttributes.RescaleType = "UNSPECIFIED"; // Delete the existing modality LUT, // although we don't have to ! ds.DeleteModalityLut(); //Set rescale slope and intercept ds.SetModalityLut(modalityLutAttributes, null); ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "MLUT.dcm"), DicomDataSetSaveFlags.None); } DicomEngine.Shutdown(); } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; }
[TestMethod] public async Task TestSetModalityLut() { //Make sure to initialize the DICOM engine, this needs to be done only once //In the whole application DicomEngine.Startup(); using (DicomDataSet ds = new DicomDataSet()) { //Load DICOM File string filePath = @"Assets\IMAGE3.dcm"; StorageFile file = await Tools.AppInstallFolder.GetFileAsync(filePath); ILeadStream stream = LeadStreamFactory.Create(file); bool success = await ds.LoadAsync(stream, DicomDataSetLoadFlags.None); Debug.Assert(success); DicomModalityLutAttributes modalityLutAttributes = new DicomModalityLutAttributes(); //No Modality LUT Sequence (0028,3000) modalityLutAttributes.IsModalityLutSequence = false; //Yes there is a rescale slope and intercept modalityLutAttributes.IsRescaleSlopeIntercept = true; modalityLutAttributes.RescaleIntercept = -128.0; modalityLutAttributes.RescaleSlope = 1.0; modalityLutAttributes.RescaleType = "UNSPECIFIED"; // Delete the existing modality LUT, // although we don't have to ! ds.DeleteModalityLut(); //Set rescale slope and intercept ds.SetModalityLut(modalityLutAttributes, null); string dicomFileNameOutput = "MLUT.dcm"; StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(dicomFileNameOutput); ILeadStream streamOutput = LeadStreamFactory.Create(saveFile); using (IDisposable disposableOUT = streamOutput as IDisposable) { await ds.SaveAsync(streamOutput, DicomDataSetSaveFlags.None); } } DicomEngine.Shutdown(); }
public void TestSetModalityLut(Stream dicomStream, Stream outputStream) { //Make sure to initialize the DICOM engine, this needs to be done only once //In the whole application DicomEngine.Startup(); using (DicomDataSet ds = new DicomDataSet()) { //Load DICOM File ds.Load(dicomStream, DicomDataSetLoadFlags.None); DicomModalityLutAttributes modalityLutAttributes = new DicomModalityLutAttributes(); //No Modality LUT Sequence (0028,3000) modalityLutAttributes.IsModalityLutSequence = false; //Yes there is a rescale slope and intercept modalityLutAttributes.IsRescaleSlopeIntercept = true; modalityLutAttributes.RescaleIntercept = -128.0; modalityLutAttributes.RescaleSlope = 1.0; modalityLutAttributes.RescaleType = "UNSPECIFIED"; // Delete the existing modality LUT, // although we don't have to ! ds.DeleteModalityLut(); //Set rescale slope and intercept ds.SetModalityLut(modalityLutAttributes, null); ds.Save(outputStream, DicomDataSetSaveFlags.None); } DicomEngine.Shutdown(); }
Public Sub TestSetModalityLut(ByVal dicomStream As Stream, ByVal outputStream As Stream) 'Make sure to initialize the DICOM engine, this needs to be done only once 'In the whole application DicomEngine.Startup() Using ds As DicomDataSet = New DicomDataSet() 'Load DICOM File ds.Load(dicomStream, DicomDataSetLoadFlags.None) Dim modalityLutAttributes As DicomModalityLutAttributes = New DicomModalityLutAttributes() 'No Modality LUT Sequence (0028,3000) modalityLutAttributes.IsModalityLutSequence = False 'Yes there is a rescale slope and intercept modalityLutAttributes.IsRescaleSlopeIntercept = True modalityLutAttributes.RescaleIntercept = -128.0 modalityLutAttributes.RescaleSlope = 1.0 modalityLutAttributes.RescaleType = "UNSPECIFIED" ' Delete the existing modality LUT, ' although we don't have to ! ds.DeleteModalityLut() 'Set rescale slope and intercept ds.SetModalityLut(modalityLutAttributes, Nothing) ds.Save(outputStream, DicomDataSetSaveFlags.None) End Using DicomEngine.Shutdown() End Sub
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2